# 版本说明:  2024.12.05 新建
# 制作人员:  dzy
# 功能说明： 第一个experta
# 备注说明：
# 环境要求： python3/ windows32or64
# 设备要求：需要修改frozendict内容，为class frozendict(collections.abc.Mapping):


# ---内置库---
import os
import sys
import time

# ---第三方库---
from colorama import init, Fore, Back, Style
from experta import Fact, KnowledgeEngine, Rule, MATCH

# ---自研库---
from lib.mytools import getNowTime
from lib.mytools import basicClass


# 定义任务项的Fact类
class TaskItem(Fact):
    """Fact类，表示一个任务项，包括标题和其他可能的属性"""
    title = ""  # 任务标题
    category = ""  # 任务类别（可选）


# 定义知识引擎
class TaskKnowledgeEngine(KnowledgeEngine):

    @Rule(TaskItem(title=MATCH.title))
    def general_task(self, title):
        """默认规则，将任务注册到默认文件"""
        print(f"任务 '{title}' 将注册到 'default_tasks.txt'")

    @Rule(TaskItem(title=MATCH.title))
    def categorize_based_on_title(self, title):
        """基于标题关键字将任务分类注册"""
        if "开发" in title:
            print(f"任务 '{title}' 将注册到 'development_tasks.txt'")
        elif "测试" in title:
            print(f"任务 '{title}' 将注册到 'testing_tasks.txt'")
        elif "文档" in title:
            print(f"任务 '{title}' 将注册到 'documentation_tasks.txt'")
        else:
            self.declare(TaskItem(title=title))  # 回退到默认规则


# 创建知识引擎实例
engine = TaskKnowledgeEngine()

# 加入事实并运行引擎
tasks = [
    TaskItem(title="开发新功能"),
    TaskItem(title="测试用例编写"),
    TaskItem(title="编写用户文档"),
    TaskItem(title="任务未分类")
]

# 启动推理引擎并声明任务
engine.reset()  # 重置引擎状态
for task in tasks:
    engine.declare(task)
engine.run()
